Skip to content

[experiment] Benchmark pnpm vs Bun on CircleCI - #428

Closed
Finesssee wants to merge 7 commits into
port/upstream-0.56.0from
experiment/bun-pnpm-circleci-20260906
Closed

[experiment] Benchmark pnpm vs Bun on CircleCI#428
Finesssee wants to merge 7 commits into
port/upstream-0.56.0from
experiment/bun-pnpm-circleci-20260906

Conversation

@Finesssee

Copy link
Copy Markdown
Collaborator

Experiment only

Do not merge. This draft PR exists only to activate the repository's CircleCI GitHub App webhook path for a package-manager benchmark.

Three equal Windows win/default medium lanes run the same Node/Vitest/TypeScript/Vite workload after dependency installation:

  • current pnpm 11.24.0
  • proposed pnpm 11.25.0
  • Bun 1.4.2

The Bun lane uses an experiment-only bun.lock plus minimumReleaseAge = 86400, isolated linking, and disabled dependency lifecycle scripts. Node remains the runtime for tests/build tools so this measures package management rather than Bun-runtime compatibility.

Plan: one cold-cache run followed by two unchanged warm-cache runs. No product/release behavior should be merged from this PR.

@coderabbitai

coderabbitai Bot commented Sep 6, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Comment @coderabbitai help to get the list of available commands.

@Finesssee

Copy link
Copy Markdown
Collaborator Author

Bun-only runtime benchmark result

Completed three real CircleCI Windows win/default medium runs with Node, npm, Corepack, and pnpm explicitly removed from PATH before the JS workload.

Run Bun install Vitest under Bun Production build under Bun Tauri CLI Fully Bun-only
1 4.041s FAIL, 27/48 files PASS, 12.177s PASS No
2 2.048s FAIL, 27/48 files PASS, 13.104s PASS No
3 2.034s FAIL, 27/48 files PASS, 10.095s PASS No

Every run independently asserted node, npm, corepack, and pnpm were unavailable.

Conclusion: Bun 1.4.2 can replace pnpm for install and can drive the production frontend build + Tauri CLI without Node, but Win-CodexBar cannot remove Node yet because the current Vitest/jsdom test contract is not compatible with Bun's runtime.

Additional disposable migration probe using Bun-native bun test + Happy DOM + a small vi compatibility shim improved discovery to 265 tests, but still left 79 failures + 10 errors. Concrete blockers include 40 vi.hoisted uses, 5 partial vi.mock(... importOriginal ...) factories, missing/incompatible vi.setSystemTime and other mock/timer/global helpers, plus accessor-spy differences.

This remains an experiment-only draft and should not be merged as-is.

@Finesssee Finesssee mentioned this pull request Sep 6, 2026
@Finesssee

Copy link
Copy Markdown
Collaborator Author

Thermo-nuclear review: KEEP AS EXPERIMENT / DO NOT MERGE

That matches the PR's own stated intent. The benchmark harness is isolated from product runtime, but the current branch does not reproduce the full three-lane experiment described in the body:

  • current head: experiment/bun-pnpm-circleci-20260906
  • bun-only-runtime is filtered to that branch
  • the three pm-benchmark jobs are filtered to experiment/bun-pnpm-circleci-completed

So a fresh run of this PR head exercises the Bun-only lane, not all three equal pnpm-11.24 / pnpm-11.25 / Bun lanes. If this PR remains as evidence, document the completed-branch runs/results explicitly. Do not merge the experiment-only bun.lock, bunfig.toml, benchmark scripts, or CircleCI routing into the product branch from this PR.

1k/CUA: no production code threshold or UI proof requirement applies.

@Finesssee Finesssee closed this Sep 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant